import request from '@/api/request'
import type { AuthorizeParams, WxCode } from '@/api/types'

/**
 * 微信授权登录流程:
 * 1.前端调用authWechat接口获取授权链接
 * 2.前端跳转到授权链接，授权成功后会跳转到redirectUrl，同时带上code参数
 * 3.后端根据code获取用户信息，并返回给前端
 * 4.前端根据后端返回的用户信息进行登录
 */

/**
 * 获取授权链接
 * @returns {code:string} 返回code
 * @returns {state:any} 返回state
 */
export function authWechat(params: AuthorizeParams) {
  return request({
    url: '/system/WechatAccounts/authorize',
    method: 'get',
    params: params,
  })
}

/**
 * 根据上面的接口返回的code获取用户信息
 * @returns {userInfo:object} 返回用户信息
 * @returns {token:string} 返回token
 */
export function authUserInfo(params: WxCode): Promise<any> {
  return request({
    url: '/system/WechatAccounts/userinfo',
    method: 'get',
    params: params,
  })
}

/**
 * 根据openId获取用户信息
 * 如果获取不到数据,则是第一次进入,显示姓名手机填写页面,用户提交后调用新增接口
 * 如果获取到数据,则是第二次进入,之前的信息
 * @param openId
 * @returns {userInfo:object} 返回用户信息
 */
export function getUserInfo(openId: string) {
  return request({
    url: '/system/UserWechatAccounts/open/' + openId,
    method: 'get',
  })
}
